home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
nan_news
/
toolkit
/
netpv.prg
< prev
next >
Wrap
Text File
|
1991-08-15
|
3KB
|
91 lines
/*
* File......: NETPV.PRG
* Author....: David Husnian
* Date......: $Date: 15 Aug 1991 23:04:06 $
* Revision..: $Revision: 1.2 $
* Log file..: $Logfile: E:/nanfor/src/netpv.prv $
*
* This is an original work by David Husnian and is placed in the
* public domain.
*
* Modification history:
* ---------------------
*
* $Log: E:/nanfor/src/netpv.prv $
*
* Rev 1.2 15 Aug 1991 23:04:06 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.1 14 Jun 1991 19:52:30 GLENN
* Minor edit to file header
*
* Rev 1.0 01 Apr 1991 01:01:50 GLENN
* Nanforum Toolkit
*
*/
/* $DOC$
* $FUNCNAME$
* FT_NETPV()
* $CATEGORY$
* Math
* $ONELINER$
* Calculate net present value
* $SYNTAX$
* FT_NETPV( <nInitialInvestment>, <nInterestRate>, <aCashFlow> ;
* [, <nNoOfCashFlows> ] ) -> nNetPV
* $ARGUMENTS$
* <nInitialInvestment> is the amount of cash invested for purposes
* of generating the cash flows.
*
* <nInterestRate> is the annual interest rate used to discount
* expected cash flows (10.5% = 10.5, not .105).
*
* <aCashFlow> is an array of the expected cash receipts each year.
*
* <nNoOfCashFlows> is the number of years cash flows are expected
* (optional, Len( aCashFlow ) ).
* $RETURNS$
* The difference between the initial investment and the discounted
* cash flow in dollars.
* $DESCRIPTION$
* This function calculates the net present value, the difference
* between the cost of an initial investment and the present value
* of the expected cash flow(s) from the investment. The present
* value of the expected cashflow(s) is calculated at the specified
* interest rate, which is often referred to as the "cost of capital".
*
* This function can be used to evaluate alternative investments.
* The larger the NPV, the more profitable the investment. See
* also the FutureValue and PresentValue for further explanations.
* The formula to calculate the net present value is:
*
* NetPresentValue = SUM(CashFlow[i] / ((1 + InterestRate) ** i))
* FOR i = 1 TO NoOfCashFlows
* $EXAMPLES$
* nNetPresentValue := FT_NETPV(10000, 10, { 10000,15000,16000,17000 } )
* $END$
*/
#ifdef FT_TEST
FUNCTION MAIN()
? FT_NETPV( 10000, 10, { 10000,15000,16000,17000 } )
RETURN ( nil )
#endif
FUNCTION FT_NETPV(nInitialInvestment, nInterestRate, aCashFlow, nNoOfCashFlows)
LOCAL nNetPresentValue := 0
nNoOfCashFlows := iif( nNoOfCashFlows == nil, len( aCashFlow ), nNoOfCashFlows )
AEVAL(aCashFlow, ;
{ | nElement, nElementNo | ;
nNetPresentValue += nElement / ;
((1 + (nInterestRate / 100)) ** nElementNo) }, ;
1, nNoOfCashFlows)
RETURN (nNetPresentValue -= nInitialInvestment)